package com.haidechizi.doublecache.annotation;

import com.haidechizi.doublecache.enums.CacheType;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 双重缓存注解
 *
 * @author haidechizi
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface DoubleCache {

    /**
     * 缓存前缀
     *
     * @return 缓存前缀
     */
    String cacheName();

    /**
     * key
     * 支持springEl表达式
     *
     * @return
     */
    String key();

    /**
     * 一级缓存超时时间
     *
     * @return
     */
    int firstCacheTimeout() default 120;

    /**
     * 耳机缓存超时时间
     *
     * @return
     */
    int secondCacheTimeout() default 240;

    /**
     * 缓存类型
     *
     * @return
     */
    CacheType type();

}
